<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        class Father {
            constructor(name, age) {
                this.name = name;
                this.age = age;
                this.fn;
            }
            fn() {
                console.log('父类的方法');
            }
        }
        let f1 = new Father('张三',35);
        console.log(f1);
        // console.log();
        // 子类继承1
        // class Son extends Father {

        // }
        // let s1 = new Son('张小三', 12);
        // s1.fn();//父类的方法
        // console.log(s1);//Son {name: '张小三', sge: 12}

        // 子类继承2
        // 子类继承父类  extends 关键字 
        // 一旦写了 constructor 那么一定要调用super函数； super
        // super特征：
            /* 
                1.super 不能单独使用,只能在 constructor 和 方法里
                2.super可以用于父类的传参 
                3.必须要在使用this之前调用super
                4.如果 没有constructor 函数 那么 super可以省略
            */
        class Son extends Father {
            constructor(n,a,height) {
                super(n,a) //一定要写，不然继承不了父类的属性
                this.height = height;
            }
            myfn(){
                console.log("myfn");
                super.fn();
            }
        }
        let s1 = new Son('张小三', 12, '178cm');
        s1.fn();//父类的方法
        s1.myfn();// myfn 父类的方法
        console.log(s1);//Son {name: '张小三', sge: 12}
        
    </script>
</body>
</html>